<?php
/**
 * @APP@
 *
 * PHP versions 5
 *
 * @category   BEAR
 * @package    App
 * @subpackage App_Form
 * @author     $Author: anonymous $ <anonymous@example.com>
 * @version    SVN: Release: $Id:$
 * @ignore
 */

/**
 * サンプルフォーム2
 * 
 * @category   BEAR
 * @package    App
 * @subpackage App_Form
 * @author     $Author: anonymous $ <anonymous@example.com>
 * @copyright  anonymous All rights reserved.
 * @version    SVN: Release: $Id:$
 * @ignore
 */
class App_Form_Untitled
{
    /**
     * Form
     *
     * @return void
     */
    public static function build1()
    {
        $form = BEAR::dependency('BEAR_Form', array('formName' => 'form'), false);
        // ヘッダー
        $form->addElement('header', '', 'フォームヘッダー');
        //ディフォルト値
        $defaults = array();
        $form->setDefaults($defaults);
        //コンスタント(再入力時も一定の値）
        $form->setConstants(array('agree' => true));
        //テキスト
        $form->addElement('text', 'title', $label, 'size=10 maxlength=20');
        $form->addElement('text', 'title', $label, 'size=10 maxlength=20 istyle="3" mode="alphabet"');
        $form->addElement('textarea', 'body', $label, 'rows=4 cols=10');
        //セレクトリスト
        $selects = array('windows' => 'Windows', 'linux' => 'Linux', 'mac' => 'Mac');
        $form->addElement('select', 'os', null, $selects);
        //ラジオボタン
        $radios[] = &HTML_QuickForm::createElement('radio', $name, $label, '男性', 0);
        $radios[] = &HTML_QuickForm::createElement('radio', $name, $label, '女性', 1);
        $form->addGroup($radios, 'gender', '性別', ' ');
        //$form->addGroup($radio, 'gender', $label, $separator);
        //チェックボックス
        $checks[] = &HTML_QuickForm::createElement('checkbox');
        //チェックボックス（連想配列キー付き）
        $checks[] = &HTML_QuickForm::createElement('checkbox', 'key_A', null, 'label_A');
        $checks[] = &HTML_QuickForm::createElement('checkbox', 'key_B', null, 'label_B');
        $form->addGroup($checks, 'AB', null, array('&nbsp;', '<br />'));
        //グループルール
        $form->addGroupRule('abcd', '少なくとも２つはチェックしてください', 'required', null, 2);
        //アドバンスチェックボックス
        $advChecks[] = &HTML_QuickForm::createElement('advcheckbox', 'student', '', '学生', null, array(false, 1));
        $advChecks[] = &HTML_QuickForm::createElement('advcheckbox', 'officeworker', '', '会社員', null, array(false, 2));
        $advChecks[] = &HTML_QuickForm::createElement('advcheckbox', 'others', '', 'その他', null, array(false, 99));
        $form->addGroup($advChecks, 'job', '', array('&nbsp', '<br>'));
        //日付
        $option = array('language' => 'en', 'format' => 'Y/m/d/H/i', 'minYear' => date("Y"), 'maxYear' => date("Y") + 5);
        $form->addElement('date', 'publish_time', NULL, $option);
        //フィルター
        $form->applyFilter('__ALL__', 'trim');
        $form->applyFilter('__ALL__', 'strip_tags');
        $form->applyFilter('__ALL__', 'removeEmoji');
        //ルール
        $form->addRule('blognm', '<font color=red>入力してください</font><br>', 'required');
        $form->setJsWarnings('必須項目を入力してください。', '');
        $form->addRule('zip', '郵便番号を正しく入力してください', 'regex', '/^[0-9]{3}\-[0-9]{4}$/', 'client');
        //フォームルール
        $form->addFormRule(array(self, 'userExists'));
    }

    public static function userExists($form)
    {
        //エラー
        $result = array('user' => "{$form['user_id']}ユーザーは存在します");
        //エラーなし
        $result = true;
        return $result;
    }

    /**
     * Form
     *
     * @return void
     */
    public static function build2()
    {
        $form = BEAR::dependency('BEAR_Form', array('formName' => 'form'), false);
        // Setting a special template for id element
        //        $renderer->setGroupTemplate('<table><tr>{content}</tr></table>', 'id');
        //        $renderer->setGroupElementTemplate('<td>{element}<br /><span style="font-size:10px;"><!-- BEGIN required --><span style="color: #f00">* </span><!-- END required --><span style="color:#996;">{label}</span></span></td>', 'id');
        $form->addElement('header', '', 'グループ要素テスト');

        // Creates a group of text inputs with templates
        $id['lastname'] = &HTML_QuickForm::createElement('text', 'lastname', 'Name', array('size' => 30));
        $id['code'] = &HTML_QuickForm::createElement('text', 'code', 'Code', array('size' => 5, 'maxlength' => 4));
        $form->addGroup($id, 'id', 'ID:', ',&nbsp');
        // IDに複雑なルールを適用
        $form->addGroupRule('id', array('lastname' => array(array('名前が必要です。', 'required', null, 'client'), array('Name is letters only', 'lettersonly', null, 'client')), 'code' => array(array('Code must be numeric', 'numeric', null, 'client'))));
        // textのグループ作成
        $areaCode = &HTML_QuickForm::createElement('text', '', null, array('size' => 4, 'maxlength' => 3));
        $phoneNo1 = &HTML_QuickForm::createElement('text', '', null, array('size' => 4, 'maxlength' => 3));
        $phoneNo2 = &HTML_QuickForm::createElement('text', '', null, array('size' => 5, 'maxlength' => 4));
        $form->addGroup(array($areaCode, $phoneNo1, $phoneNo2), 'phoneNo', 'Telephone:', '-');
        // グループにルールを適用
        $form->addGroupRule('phoneNo', '電話番号を入力してください', 'required', null, 3, 'client');
        $form->addGroupRule('phoneNo', '値は数値でなくてなはなりません', 'numeric', null, 3, 'client');
        //セパレータをarrayで指定して使ってチェックボックスを作成
        $checkbox[] = &HTML_QuickForm::createElement('checkbox', 'A', null, 'A');
        $checkbox[] = &HTML_QuickForm::createElement('checkbox', 'B', null, 'B');
        $checkbox[] = &HTML_QuickForm::createElement('checkbox', 'C', null, 'C');
        $checkbox[] = &HTML_QuickForm::createElement('checkbox', 'D', null, 'D');
        $form->addGroup($checkbox, 'ichkABC', 'ABCD:', array('&nbsp;', '<br />'));
        //最低1エレメント必要
        $form->addGroupRule('ichkABC', '最低２つチェックしてください', 'required', null, 2, 'client', true);
        // ラジボタングループを作成
        $radio[] = &HTML_QuickForm::createElement('radio', null, null, 'Yes', 'Y');
        $radio[] = &HTML_QuickForm::createElement('radio', null, null, 'No', 'N');
        $form->addGroup($radio, 'iradYesNo', 'Yes/No:');
        // ラジオボタンをバリデーション
        $form->addRule('iradYesNo', 'YesかNoをチェックしてください', 'required', null, 'client');
        // フォーム下部に表示するボタンをグループで作成
        $buttons[] = & $form->createElement('submit', null, 'Submit');
        $buttons[] = & $form->createElement('reset', null, 'Reset');
        $buttons[] = & $form->createElement('checkbox', 'clientSide', null, 'クライアントサイドチェック使用', array('checked' => 'checked', 'onclick' => "if (this.checked) {this.form.onsubmit = validate_" . $form->getAttribute('id') . ";} else {this.form.onsubmit = null;}"));
        $form->addGroup($buttons);
    }
}